diff --git a/board/renesas/lager/qos.c b/board/renesas/lager/qos.c
index 3742757..930fe8d 100644
--- a/board/renesas/lager/qos.c
+++ b/board/renesas/lager/qos.c
@@ -12,55 +12,55 @@
 #include <asm/io.h>
 #include <asm/arch/rmobile.h>
 
-/* QoS version 0.955 */
+/* QoS version 0.955 for ES1
 
 enum {
-	DBSC3_R00, DBSC3_R01, DBSC3_R02, DBSC3_R03, DBSC3_R04,
-	DBSC3_R05, DBSC3_R06, DBSC3_R07, DBSC3_R08, DBSC3_R09,
-	DBSC3_R10, DBSC3_R11, DBSC3_R12, DBSC3_R13, DBSC3_R14,
-	DBSC3_R15,
-	DBSC3_W00, DBSC3_W01, DBSC3_W02, DBSC3_W03, DBSC3_W04,
-	DBSC3_W05, DBSC3_W06, DBSC3_W07, DBSC3_W08, DBSC3_W09,
-	DBSC3_W10, DBSC3_W11, DBSC3_W12, DBSC3_W13, DBSC3_W14,
-	DBSC3_W15,
+	DBSC3_00, DBSC3_01, DBSC3_02, DBSC3_03, DBSC3_04,
+	DBSC3_05, DBSC3_06, DBSC3_07, DBSC3_08, DBSC3_09,
+	DBSC3_10, DBSC3_11, DBSC3_12, DBSC3_13, DBSC3_14,
+	DBSC3_15,
 	DBSC3_NR,
 };
 
-static const u32 dbsc3_qos_addr[DBSC3_NR] = {
-	[DBSC3_R00] = DBSC3_0_QOS_R0_BASE,
-	[DBSC3_R01] = DBSC3_0_QOS_R1_BASE,
-	[DBSC3_R02] = DBSC3_0_QOS_R2_BASE,
-	[DBSC3_R03] = DBSC3_0_QOS_R3_BASE,
-	[DBSC3_R04] = DBSC3_0_QOS_R4_BASE,
-	[DBSC3_R05] = DBSC3_0_QOS_R5_BASE,
-	[DBSC3_R06] = DBSC3_0_QOS_R6_BASE,
-	[DBSC3_R07] = DBSC3_0_QOS_R7_BASE,
-	[DBSC3_R08] = DBSC3_0_QOS_R8_BASE,
-	[DBSC3_R09] = DBSC3_0_QOS_R9_BASE,
-	[DBSC3_R10] = DBSC3_0_QOS_R10_BASE,
-	[DBSC3_R11] = DBSC3_0_QOS_R11_BASE,
-	[DBSC3_R12] = DBSC3_0_QOS_R12_BASE,
-	[DBSC3_R13] = DBSC3_0_QOS_R13_BASE,
-	[DBSC3_R14] = DBSC3_0_QOS_R14_BASE,
-	[DBSC3_R15] = DBSC3_0_QOS_R15_BASE,
-	[DBSC3_W00] = DBSC3_0_QOS_W0_BASE,
-	[DBSC3_W01] = DBSC3_0_QOS_W1_BASE,
-	[DBSC3_W02] = DBSC3_0_QOS_W2_BASE,
-	[DBSC3_W03] = DBSC3_0_QOS_W3_BASE,
-	[DBSC3_W04] = DBSC3_0_QOS_W4_BASE,
-	[DBSC3_W05] = DBSC3_0_QOS_W5_BASE,
-	[DBSC3_W06] = DBSC3_0_QOS_W6_BASE,
-	[DBSC3_W07] = DBSC3_0_QOS_W7_BASE,
-	[DBSC3_W08] = DBSC3_0_QOS_W8_BASE,
-	[DBSC3_W09] = DBSC3_0_QOS_W9_BASE,
-	[DBSC3_W10] = DBSC3_0_QOS_W10_BASE,
-	[DBSC3_W11] = DBSC3_0_QOS_W11_BASE,
-	[DBSC3_W12] = DBSC3_0_QOS_W12_BASE,
-	[DBSC3_W13] = DBSC3_0_QOS_W13_BASE,
-	[DBSC3_W14] = DBSC3_0_QOS_W14_BASE,
-	[DBSC3_W15] = DBSC3_0_QOS_W15_BASE,
+static u32 dbsc3_0_r_qos_addr[DBSC3_NR] = {
+	[DBSC3_00] = DBSC3_0_QOS_R0_BASE,
+	[DBSC3_01] = DBSC3_0_QOS_R1_BASE,
+	[DBSC3_02] = DBSC3_0_QOS_R2_BASE,
+	[DBSC3_03] = DBSC3_0_QOS_R3_BASE,
+	[DBSC3_04] = DBSC3_0_QOS_R4_BASE,
+	[DBSC3_05] = DBSC3_0_QOS_R5_BASE,
+	[DBSC3_06] = DBSC3_0_QOS_R6_BASE,
+	[DBSC3_07] = DBSC3_0_QOS_R7_BASE,
+	[DBSC3_08] = DBSC3_0_QOS_R8_BASE,
+	[DBSC3_09] = DBSC3_0_QOS_R9_BASE,
+	[DBSC3_10] = DBSC3_0_QOS_R10_BASE,
+	[DBSC3_11] = DBSC3_0_QOS_R11_BASE,
+	[DBSC3_12] = DBSC3_0_QOS_R12_BASE,
+	[DBSC3_13] = DBSC3_0_QOS_R13_BASE,
+	[DBSC3_14] = DBSC3_0_QOS_R14_BASE,
+	[DBSC3_15] = DBSC3_0_QOS_R15_BASE,
 };
 
+static u32 dbsc3_0_w_qos_addr[DBSC3_NR] = {
+	[DBSC3_00] = DBSC3_0_QOS_W0_BASE,
+	[DBSC3_01] = DBSC3_0_QOS_W1_BASE,
+	[DBSC3_02] = DBSC3_0_QOS_W2_BASE,
+	[DBSC3_03] = DBSC3_0_QOS_W3_BASE,
+	[DBSC3_04] = DBSC3_0_QOS_W4_BASE,
+	[DBSC3_05] = DBSC3_0_QOS_W5_BASE,
+	[DBSC3_06] = DBSC3_0_QOS_W6_BASE,
+	[DBSC3_07] = DBSC3_0_QOS_W7_BASE,
+	[DBSC3_08] = DBSC3_0_QOS_W8_BASE,
+	[DBSC3_09] = DBSC3_0_QOS_W9_BASE,
+	[DBSC3_10] = DBSC3_0_QOS_W10_BASE,
+	[DBSC3_11] = DBSC3_0_QOS_W11_BASE,
+	[DBSC3_12] = DBSC3_0_QOS_W12_BASE,
+	[DBSC3_13] = DBSC3_0_QOS_W13_BASE,
+	[DBSC3_14] = DBSC3_0_QOS_W14_BASE,
+	[DBSC3_15] = DBSC3_0_QOS_W15_BASE,
+};
+
+/* QoS version 0.955 for ES1 */
 void qos_init(void)
 {
 	int i;
@@ -115,7 +115,6 @@
 	writel(0x20142032, &s3c_qos->s3cqos8);
 
 	s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_AXI_BASE;
-
 	writel(0x00810089, &s3c_qos->s3cqos0);
 	writel(0x20410001, &s3c_qos->s3cqos1);
 	writel(0x200A2023, &s3c_qos->s3cqos2);
@@ -129,9 +128,9 @@
 	writel(0x00200808, &s3c->s3carcr11);
 
 	/* DBSC -QoS */
-	/* DBSC0 - Read/Write */
-	for (i = DBSC3_R00; i < DBSC3_NR; i++) {
-		qos_addr = (struct rcar_dbsc3_qos *)dbsc3_qos_addr[i];
+	/* DBSC0 - Read */
+	for (i = DBSC3_00; i < DBSC3_NR; i++) {
+		qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_r_qos_addr[i];
 		writel(0x00000203, &qos_addr->dblgcnt);
 		writel(0x00002064, &qos_addr->dbtmval0);
 		writel(0x00002048, &qos_addr->dbtmval1);
@@ -143,6 +142,22 @@
 		writel(0x00002019, &qos_addr->dbthres2);
 		writel(0x00000000, &qos_addr->dblgqon);
 	}
+
+	/* DBSC0 - Write */
+	for (i = DBSC3_00; i < DBSC3_NR; i++) {
+		qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_w_qos_addr[i];
+		writel(0x00000203, &qos_addr->dblgcnt);
+		writel(0x00002064, &qos_addr->dbtmval0);
+		writel(0x00002048, &qos_addr->dbtmval1);
+		writel(0x00002032, &qos_addr->dbtmval2);
+		writel(0x00002019, &qos_addr->dbtmval3);
+		writel(0x00000001, &qos_addr->dbrqctr);
+		writel(0x00002019, &qos_addr->dbthres0);
+		writel(0x00002019, &qos_addr->dbthres1);
+		writel(0x00002019, &qos_addr->dbthres2);
+		writel(0x00000000, &qos_addr->dblgqon);
+	}
+
 	/* CCI-400 -QoS */
 	writel(0x20001000, CCI_400_MAXOT_1);
 	writel(0x20001000, CCI_400_MAXOT_2);
